"""
@-*- coding: utf-8 -*-
@ python：python 3.8
@ 创建人员：ylx
@ 创建时间：2025/3/4 下午6:41
@ 内容：
"""
import json

import requests


#封装就意味着，这个方法要能控制所有的请求
class RequestUtil:
    sess = requests.session()

    # def send_request(self, method, url, params, json, data, headers, files):#这个方法来封装统一请求，一个请求会需要
    #相关的请求方式，路径，传参，以及头部信息等等，我们把这些作为入参，下方的方法定义会更加简单一些
    @staticmethod   #使用静态装饰器，使得其他模块调用时，不用实例化类既可直接通过类名.方法名来使用
    def send_request(method, url, datas=None, **kwargs):
        methods = str(method).lower()
        res = None
        if methods == 'get':
            res = RequestUtil.sess.request(method=methods, url=url, params=datas, **kwargs)
        elif methods == 'post':
            if datas:
                str_datas = json.dumps(datas)  #处理post传参面临的2种方式，data  json  现在统一把需要json的来转换为data也可以的，做兼容处理
                # #但是有时这样转换会有问题，可能这个接口有要求，data传参不接受字符串也是存在的，具体遇到了具体再看，如何细分，写好if else
                #我们可以根据请求头来做判断，看是用json 还是data传参，如果业务接口有严格限制时
                #可以新增一些判断条件来满足
                res = RequestUtil.sess.request(method=methods, url=url, data=str_datas, **kwargs)
            else:
                res = RequestUtil.sess.request(method=methods, url=url, **kwargs)

        else:  #下面还有一些其他的传参的请求方式，忽略，根据自己的需要来补充
            pass
        return res
